home *** CD-ROM | disk | FTP | other *** search
- include lmacros.h
-
- assume ds:dataseg
- assume cs:codeseg
-
- ifdef FARPROC
- extrn pkint_:far
- else
- extrn pkint_:near
- endif
- extrn _Dorg_:byte
- public Intstk_
-
- codeseg segment
- sssave dw 0
- spsave dw 0
- dbase dw seg _Dorg_
-
- ; pkvec - Packet driver receive call handler
- public pkvec_
- pkvec_ proc far
- pushf ; save his interrupt state
- cli ; no distractions
- mov cs:sssave,ss ; Save his stack
- mov cs:spsave,sp
-
- mov ss,cs:dbase ; switch to our own
- lea sp,Intstk_+512
-
- push es ; save regs, making them available to pkint()
- push ds
- push ax
- push bx
- push cx
- push dx
- push bp
- push si
- push di
-
- mov ds,cs:dbase
- mov es,cs:dbase
- call pkint_
-
- pop di
- pop si
- pop bp
- pop dx
- pop cx
- pop bx
- pop ax
- pop ds
- pop es
-
- ; Restore his stack and interrupt state
- mov ss,cs:sssave
- mov sp,cs:spsave
- popf
- ret
- pkvec_ endp
- codeseg ends
-
- end
-